package com.lihuacats.bilibili.task.bilibili_task.task.live;

import com.alibaba.fastjson.JSONObject;
import com.lihuacats.bilibili.task.bilibili_task.config.ConfigProperties;
import com.lihuacats.bilibili.task.bilibili_task.domain.UserData;
import com.lihuacats.bilibili.task.bilibili_task.task.Task;
import com.lihuacats.bilibili.task.bilibili_task.util.Request;
import lombok.extern.slf4j.Slf4j;

/**
 * 银瓜子兑换硬币
 *
 * @author kurisu
 * @Time 2020-10-13
 */
@Slf4j
public class Silver2CoinTask implements Task {
    UserData userData = UserData.getInstance();

    @Override
    public void run(ConfigProperties config) {
        /* 获得银瓜子的数量 */
        Integer silver = getSilver();
        log.warn("【银瓜子】: {}", silver);
        if (config.isS2c()) {
            try {
                /* 如果银瓜子数量小于700没有必要再进行兑换 */
                int minSilver = 700;
                if (silver < minSilver) {
                    log.warn("【银瓜子兑换硬币】: {}", "银瓜子余额不足❌");
                } else {
                    log.warn("【银瓜子兑换硬币】: {}", silver2coin().getString("msg") + "✔");
                }
            } catch (Exception e) {
                log.error("💔银瓜子兑换硬币错误 : ", e);
            }
        } else {
            log.warn("【银瓜子兑换硬币】: " + "自定义配置不将银瓜子兑换硬币✔");
        }
    }

    /**
     * 银瓜子兑换成硬币
     *
     * @return JSONObject
     * @author kurisu
     * @Time 2020-10-13
     */
    public JSONObject silver2coin() {
        JSONObject pJson = new JSONObject();
        pJson.put("csrf", userData.getBiliJct());
        return Request.post("https://api.live.bilibili.com/pay/v1/Exchange/silver2coin", pJson);
    }

    /**
     * 获取银瓜子的数量
     *
     * @return Integer
     * @author kurisu
     * @Time 2020-10-17
     */
    public Integer getSilver() {
        JSONObject jsonObject = Request.get("https://api.live.bilibili.com/xlive/web-ucenter/user/get_user_info");
        return Integer.parseInt(jsonObject.getJSONObject("data").getString("silver"));
    }
}
